Mobile computing devices such as smartphones and tablet computers are becoming more widely used every day. There are multiple mobile operating systems available for different mobile computing devices, each with a wide variety of available apps. Users can install apps on their mobile devices by downloading them from an online app store that provides apps for their particular mobile operating system.
Apple's iOS (formerly known as iPhone OS) is a mobile operating system that runs on Apple mobile devices such as the iPhone, the iPad and the iPod Touch. Many applications (“apps”) for iOS are available for download from Apple's App Store. Android is an open-source, Linux based operating system for mobile devices. A large community of developers write apps that run on Android devices. Many of these apps are available online through Google Play (formerly the Android Market). Android apps can also be downloaded from other online stores and additional third-party sites. Windows Phone is a mobile operating system developed by Microsoft. Users can download apps for Windows Phone from Microsoft's Windows Phone Marketplace. Another example of a mobile operating system is Blackberry OS (the latest version is Blackberry 10) from BlackBerry Limited (formerly Research In Motion). Blackberry OS apps are downloaded from the BlackBerry World Storefront.
Many mobile operating systems such as iOS, Android and Windows Phone run each app in a separate sandbox, which is an isolated area that does not have access to the rest of the system's resources, unless permissions are explicitly granted. A sandbox is a tightly controlled environment, providing limited areas of storage and memory for the app, and restricting or disallowing access to system and hardware resources such as network, input devices, current location, contacts, etc. Typically, a sandboxed app is only allowed to access files inside its own storage area, and cannot change system settings. Operating systems that run apps in this manner are sometimes referred to as sandboxed operating systems.
Providers of apps, such as commercial software publishers, often create partnerships with separate organizations, such as internet service providers (ISPs) or retailers. Under these partnerships, it is desirable to provide partner specific branding, authentication and other targeted features as part of the app. In this context, a given software publisher may enter into separate arrangements with multiple parties to provide partner specific versions of the same underlying app. For example, a publisher of a mobile security app may have a partnership with an ISP, a separate partnership with a retailer of tablets and a third partnership with a cell phone carrier. In this case, it would be desirable for the app provider to distribute a separate, partner-aware version of the security app to each partner's customers (e.g., the ISP subscribers, the tablet purchasers and the cellular service customers). In other words, each partner wants a version of the app to be provided to its customers that includes its own specific branding and other targeted features.
Where an app is developed to be run on a sandboxed operating system and to be distributed via an app store, certain inherent difficulties arise in building separate partner aware instantiations of the app for multiple partners. It is desirable for different users to be able to download different, partner branded versions of the same app, based on the specific partner with which each specific user has the business relationship. For example, a first user may be getting the app in conjunction with their ISP, whereas a second user may be getting the app in conjunction with their cellular carrier. Thus, although the two users are installing the same core app, the partner specific branding and authentication should be different for each user. Yet, because of the sandboxed nature of mobile operating systems, once installed the app cannot conventionally access configuration information on the mobile device that could indicate the specific partner associated with the user.
The software publisher can build a different version of the app for each partner, and make each separate version available for download from the app store. Problematically, this approach creates a great deal of overhead, both in terms of developing and maintaining multiple versions of the app, and in managing the app store deployment of the multiple versions. This approach also results in a poor user experience, because a search of an app store for a given app results in multiple versions of the same app, each branded for a different partner, and perhaps an additional, unbranded version. These multiple search results tend to confuse the user, who does not typically understand the differences between the versions, or know which one to download.
It would be desirable to address these issues.